﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using Basicas;
using ProjetoJornada_Negocios.Fachada;
using System.Collections.Generic;
using Basicas.Utils.excecoes;
using Basicas.Utils;

namespace ProjetoJornada.Interno
{
    public partial class Turma_Cadastro : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

            if (Session["Jornada"] == null)
            {
                Response.Redirect("Jornada_Escolher.aspx?urlReturn=" + HttpContext.Current.Request.Url.AbsolutePath);                
            }

            List<Instrutor_Monitor> instrutores = Fachada.Instance.GetTodosInstrutorMonitor();

            ListItem itemInicial = new ListItem();
            this.ddlMonitor.Items.Add(itemInicial);
            this.ddlInstrutor.Items.Add(itemInicial);

            foreach (Instrutor_Monitor instrutorMonitor in instrutores)
            {
                ListItem item = new ListItem(instrutorMonitor.Nome, instrutorMonitor.Cpf);

                if (instrutorMonitor.EhInstrutor)
                {
                    this.ddlInstrutor.Items.Add(item);
                }
                else
                {
                    this.ddlMonitor.Items.Add(item);
                }
            }

            List<Curso> cursos = Fachada.Instance.ConsultarTodosCursos();
            foreach (Curso curso in cursos)
            {
                ListItem item = new ListItem(curso.Nome, curso.Id.ToString());
                this.ddlCurso.Items.Add(item);
            }

        }

        protected void CadastrarImageButton_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                Turma turma = new Turma();

                DateTime dataInicial = new DateTime();
                DateTime.TryParse(this.txtDataInicial.Text, out dataInicial);
                DateTime dataFinal = new DateTime();
                DateTime.TryParse(this.txtDataFinal.Text, out dataFinal);
                turma.DataInicial = dataInicial;
                turma.DataFinal = dataFinal;

                turma.Horarios = this.txtHorario.Text;
                turma.Local = this.txtLocal.Text;

                double preco = 0;
                Double.TryParse(this.txtValor.Text, out preco);
                turma.PrecoAtual = preco;

                int vagas = 0;
                int.TryParse(this.txtQntVagas.Text, out vagas);
                turma.QtdeVagas = vagas;

                Curso curso = new Curso();
                curso.Id = Convert.ToInt32(this.ddlCurso.SelectedValue);
                curso.Nome = this.ddlCurso.SelectedItem.Text;
                turma.Curso = curso;

                List<Instrutor_Monitor> instrutores = new List<Instrutor_Monitor>();

                if (this.ddlInstrutor.SelectedIndex != 0)
                {
                    Instrutor_Monitor instrutor = new Instrutor_Monitor();
                    instrutor.Cpf = this.ddlInstrutor.SelectedValue;
                    instrutores.Add(instrutor);
                    turma.Instrutores = instrutores;
                }

                List<Instrutor_Monitor> monitores = new List<Instrutor_Monitor>();

                if (this.ddlMonitor.SelectedIndex != 0)
                {
                    Instrutor_Monitor monitor = new Instrutor_Monitor();
                    monitor.Cpf = this.ddlMonitor.SelectedValue;
                    monitores.Add(monitor);
                    turma.Monitores = monitores;
                }

                Jornada jornada = new Jornada();
                jornada.Id = Convert.ToInt32(Session["Jornada"]);
                turma.Jornada = jornada;

                Fachada.Instance.InserirTurma(turma);

                Response.Redirect("Turma_Listar.aspx");
            }
            catch (PeriodoInvalidoException)
            {
                this.lblMensagemErro.Text = MensagensPadrao.ERRO_PERIODO_INVALIDO;
            }
        }
    }
}
